package org.example.day04;

/**
 * @author zlxad
 * @version 1.0
 * @description: TODO
 * 1到n的n个连续的数字组成一个数组，n为3的倍数<br>
 * 每次按照顺序从数组中取出3个元素，去掉这3个元素中的一个最大值和一个最小值，并将剩下的元素累加为S，S初始值为0<br>
 * 可以通过调整数组中元素的位置改变最终结果，每移动一个元素计为移动一次。请计算最少移动几次可以使得数组和S最大。<br>
 *
 *
 * @date 2024/3/11 15:22
 */
public class test073 {
    public static void main(String[] args) {
        int n = 9; // 示例：n为3的倍数
        System.out.println("最少移动次数: " + minMovesToMaxSum(n));
    }

    public static int minMovesToMaxSum(int n) {
        // 数组已经是连续的1到n，无需真正移动元素，计算取数顺序即可
        // 初始化和S
        int sum = 0;
        // 每次取数的起始索引（3的倍数）
        int start = 0;
        // 当前轮次已经取到的数字个数
        int count = 0;

        // 遍历数组中的每个数字
        for (int i = 1; i <= n; i++) {
            // 如果当前轮次已经取满3个数字，则进入下一轮
            if (count == 3) {
                start += 3;
                count = 0;
            }

            // 累加当前轮次中间的数字（即第k+1个数）
            sum += i;
            // 更新当前轮次已经取到的数字个数
            count++;
        }

        // 返回最终结果（移动次数为0，因为我们没有真正移动元素）
        return 0;
    }
}